<?php

/**
 * \file
 * Classe `Int`.
 */

namespace pilar\Entities /* \cond */ ; /* \endcond */
{

/**
 * Membre numérique entier.
 *
 * \since 09/09/2008
 * \author Matthieu OVIEDO <matthieu.oviedo@gmail.com>
 */
class Int extends Member {

protected function loadDefaultParams() {
 parent::loadDefaultParams();

 $this->params->define(array(
  'unsigned' => false,          // Vrai si l'entier est non signé.
  'size' => '',                 // small, tiny, big...
  'autoIncrement' => false,     // Active l'auto-incrémentation.
  'defaultValue' => ''          // Valeur par défaut.
 ));
}


protected function initialize() {
 parent::initialize();

 $this->addField(
  new \pilar\Entities\Fields\Int(array(
   'unsigned' => $this->get('unsigned'),
   'size' => $this->get('size'),
   'autoIncrement' => $this->get('autoIncrement'),
   'defaultValue' => $this->get('defaultValue')
  ))
 );
}


protected function defaultFormMemberParams() {
 if($this->get('formClass') == '\\pilar\\SimpleFormMembers\\TextBox') {
  return array(
   'maxLength' => 6
  );
 }

 return parent::defaultFormMemberParams();
}


/**
 * Vérifie que les valeurs assignées au membre soient bien des entiers.
 *
 * Si le membre est défini comme non signé alors on n'accepte que les entiers
 * positifs.
 *
 * \todo
 * Voir si il n'y a pas plus optimisé pour tester si \a $value est un entier.
 *
 * \since 08/10/2008
 * \return \c TRUE si \a $value est un entier, \c FALSE sinon.
 */
public function acceptsFieldValue($fieldName, $value) {
 if($this->get('unsigned') == true) {
  return (preg_match('/^([0-9]+)$/', $value) == 1);
 } else {
  return (preg_match('/^[-]?([0-9]+)$/', $value) == 1);
 }
}

} // Class.

} // Namespace.

?>
